package com.guigu.service.impl;

import com.guigu.dto.TemplateManagementDTO;
import com.guigu.mapper.TemplateManagementMapper;
import com.guigu.service.TemplateManagementService;
import com.guigu.vo.TemplateManagementVO;
import com.guigu.vo.UserVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

@Service
public class TemplateManagementServiceImpl implements TemplateManagementService {
    @Autowired
    private TemplateManagementMapper templateManagementMapper;

    @Override
    public List<TemplateManagementVO> queryFoodByName(TemplateManagementDTO dto) {
        return this.templateManagementMapper.queryFoodByName(dto);
    }

    @Override
    public List<TemplateManagementVO> queryTemplate_management(TemplateManagementDTO dto) {
        return this.templateManagementMapper.queryTemplate_management(dto);
    }

    @Override
    @Transactional
    public void add_dietary_intervention(TemplateManagementDTO dto) {
        if(dto.getGenre() == 1 ){
            this.templateManagementMapper.add_diet_template(dto);
            this.templateManagementMapper.add_meddle_food(dto);
        } else if(dto.getGenre() == 2){
            this.templateManagementMapper.add_exercise_intervention(dto);
            this.templateManagementMapper.add_movement_intervention(dto);
        } else if(dto.getGenre() == 3){
            this.templateManagementMapper.add_diet_template(dto);
            this.templateManagementMapper.add_meddle_food(dto);
            this.templateManagementMapper.add_exercise_intervention(dto);
            this.templateManagementMapper.add_movement_intervention(dto);
        }
      this.templateManagementMapper.add_template_management(dto);
    }

    @Override
    public List<TemplateManagementVO> querySportsByName(TemplateManagementDTO dto) {
        return this.templateManagementMapper.querySportsByName(dto);
    }

    @Override
    public void updateInterveneById(TemplateManagementDTO templateManagementDTO) {
        this.templateManagementMapper.updateInterveneById(templateManagementDTO);
    }

    @Override
    public void updateTypeById(TemplateManagementDTO templateManagementDTO) {
        this.templateManagementMapper.updateTypeById(templateManagementDTO);
    }

    @Override
    @Transactional
    public void delTemplate_managementById(TemplateManagementDTO templateManagementDTO) {
        if (ObjectUtils.isEmpty(templateManagementDTO)) {
            throw new IllegalArgumentException("");
        }
        TemplateManagementVO templateManagementVo = this.templateManagementMapper.queryIdBym_id(templateManagementDTO);
        BeanUtils.copyProperties(templateManagementVo,templateManagementDTO);
        if (templateManagementDTO.getYs_id() != 0){
            this.templateManagementMapper.delDiet_templateByYs_id(templateManagementDTO);
            this.templateManagementMapper.delMeddle_foodBy_ys_id(templateManagementDTO);
        }else if(templateManagementDTO.getYd_id() != 0){
            this.templateManagementMapper.delExercise_interventionBy_yd_id(templateManagementDTO);
            this.templateManagementMapper.delMovement_interventionBy_yd_id(templateManagementDTO);
        }
        this.templateManagementMapper.delTemplate_managementBym_id(templateManagementDTO);


    }

    @Override
    public List<TemplateManagementVO> queryTemplateNameByName(TemplateManagementDTO templateManagementDTO) {
        return this.templateManagementMapper.queryTemplateNameByName(templateManagementDTO);
    }

    @Override
    public List<UserVO> queryUserByRole() {
        return this.templateManagementMapper.queryUserByRole();
    }

    @Override
    @Transactional
    public TemplateManagementVO queryTemplateInfoByName(TemplateManagementDTO templateManagementDTO) {
        return this.templateManagementMapper.queryTemplateInfoByName(templateManagementDTO);
    }

    @Override
    public List<TemplateManagementVO> queryDietInfo(TemplateManagementDTO templateManagementDTO) {
        return this.templateManagementMapper.queryDietInfo(templateManagementDTO);
    }

    @Override
    public List<TemplateManagementVO> queryExerciseInfo(TemplateManagementDTO templateManagementDTO) {
        return this.templateManagementMapper.queryExerciseInfo(templateManagementDTO);
    }


}
